package com.ruoyi.detail.domain;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 订单详情VO对象，包含订单详情和订单商品信息
 * 
 * @author ruoyi
 * @date 2025-08-15
 */
public class OrderDetailVO extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    // 订单详情信息
    /** 订单详情ID */
    @Excel(name = "订单详情ID")
    private Long detailId;

    /** 商品名称 */
    @Excel(name = "商品名称")
    private String name;

    /** 商品图片 */
    @Excel(name = "商品图片")
    private String image;

    /** 详情表id */
    @Excel(name = "详情表id")
    private Long orderId;

    /** 商品表id */
    @Excel(name = "商品表id")
    private Long goodId;

    /** 规格 */
    @Excel(name = "规格")
    private Long guigeId;

    /** 数量 */
    @Excel(name = "数量")
    private Long quantity;

    /** 单价 */
    @Excel(name = "单价")
    private Long amount;

    // 订单商品信息
    /** 订单商品ID */
    @Excel(name = "订单商品ID")
    private Long orderGoodsId;

    /** 订单编号 */
    @Excel(name = "订单编号")
    private String number;

    /** 用户ID */
    @Excel(name = "用户ID")
    private Long userId;

    /** 地址ID */
    @Excel(name = "地址ID")
    private Integer addressId;

    /** 商品单价 */
    @Excel(name = "商品单价")
    private BigDecimal goodsPrice;

    /** 小计金额 */
    @Excel(name = "小计金额")
    private Float subtotal;

    /** 创建时间 */
    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /** 支付时间 */
    @Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date payTime;

    /** 支付状态 */
    @Excel(name = "支付状态")
    private Integer payStatus;

    /** 支付方式 */
    @Excel(name = "支付方式")
    private String payMethod;

    /** 下单人 */
    @Excel(name = "下单人")
    private String orderPerson;

    /** 手机号 */
    @Excel(name = "手机号")
    private String phone;

    /** 收货人 */
    @Excel(name = "收货人")
    private String consignee;

    /** 订单状态 */
    @Excel(name = "订单状态")
    private String orderStatus;

    /** 收货地址 */
    @Excel(name = "收货地址")
    private String address;

    /** 取消原因 */
    @Excel(name = "取消原因")
    private String cancelReson;

    /** 拒收原因 */
    @Excel(name = "拒收原因")
    private String rejectionReson;

    /** 取消时间 */
    @Excel(name = "取消时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date cancelTime;

    /** 发货时间 */
    @Excel(name = "发货时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date dekiveryTime;

    /** 发货状态 */
    @Excel(name = "发货状态")
    private Integer dekiveryStatus;

    // Getters and Setters
    public Long getDetailId() {
        return detailId;
    }

    public void setDetailId(Long detailId) {
        this.detailId = detailId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public Long getOrderId() {
        return orderId;
    }

    public void setOrderId(Long orderId) {
        this.orderId = orderId;
    }

    public Long getGoodId() {
        return goodId;
    }

    public void setGoodId(Long goodId) {
        this.goodId = goodId;
    }

    public Long getGuigeId() {
        return guigeId;
    }

    public void setGuigeId(Long guigeId) {
        this.guigeId = guigeId;
    }

    public Long getQuantity() {
        return quantity;
    }

    public void setQuantity(Long quantity) {
        this.quantity = quantity;
    }

    public Long getAmount() {
        return amount;
    }

    public void setAmount(Long amount) {
        this.amount = amount;
    }

    public Long getOrderGoodsId() {
        return orderGoodsId;
    }

    public void setOrderGoodsId(Long orderGoodsId) {
        this.orderGoodsId = orderGoodsId;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public Integer getAddressId() {
        return addressId;
    }

    public void setAddressId(Integer addressId) {
        this.addressId = addressId;
    }

    public BigDecimal getGoodsPrice() {
        return goodsPrice;
    }

    public void setGoodsPrice(BigDecimal goodsPrice) {
        this.goodsPrice = goodsPrice;
    }

    public Float getSubtotal() {
        return subtotal;
    }

    public void setSubtotal(Float subtotal) {
        this.subtotal = subtotal;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getPayTime() {
        return payTime;
    }

    public void setPayTime(Date payTime) {
        this.payTime = payTime;
    }

    public Integer getPayStatus() {
        return payStatus;
    }

    public void setPayStatus(Integer payStatus) {
        this.payStatus = payStatus;
    }

    public String getPayMethod() {
        return payMethod;
    }

    public void setPayMethod(String payMethod) {
        this.payMethod = payMethod;
    }

    public String getOrderPerson() {
        return orderPerson;
    }

    public void setOrderPerson(String orderPerson) {
        this.orderPerson = orderPerson;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getConsignee() {
        return consignee;
    }

    public void setConsignee(String consignee) {
        this.consignee = consignee;
    }

    public String getOrderStatus() {
        return orderStatus;
    }

    public void setOrderStatus(String orderStatus) {
        this.orderStatus = orderStatus;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getCancelReson() {
        return cancelReson;
    }

    public void setCancelReson(String cancelReson) {
        this.cancelReson = cancelReson;
    }

    public String getRejectionReson() {
        return rejectionReson;
    }

    public void setRejectionReson(String rejectionReson) {
        this.rejectionReson = rejectionReson;
    }

    public Date getCancelTime() {
        return cancelTime;
    }

    public void setCancelTime(Date cancelTime) {
        this.cancelTime = cancelTime;
    }

    public Date getDekiveryTime() {
        return dekiveryTime;
    }

    public void setDekiveryTime(Date dekiveryTime) {
        this.dekiveryTime = dekiveryTime;
    }

    public Integer getDekiveryStatus() {
        return dekiveryStatus;
    }

    public void setDekiveryStatus(Integer dekiveryStatus) {
        this.dekiveryStatus = dekiveryStatus;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("detailId", getDetailId())
            .append("name", getName())
            .append("image", getImage())
            .append("orderId", getOrderId())
            .append("goodId", getGoodId())
            .append("guigeId", getGuigeId())
            .append("quantity", getQuantity())
            .append("amount", getAmount())
            .append("orderGoodsId", getOrderGoodsId())
            .append("number", getNumber())
            .append("userId", getUserId())
            .append("addressId", getAddressId())
            .append("goodsPrice", getGoodsPrice())
            .append("subtotal", getSubtotal())
            .append("createTime", getCreateTime())
            .append("payTime", getPayTime())
            .append("payStatus", getPayStatus())
            .append("payMethod", getPayMethod())
            .append("orderPerson", getOrderPerson())
            .append("phone", getPhone())
            .append("consignee", getConsignee())
            .append("orderStatus", getOrderStatus())
            .append("address", getAddress())
            .append("cancelReson", getCancelReson())
            .append("rejectionReson", getRejectionReson())
            .append("cancelTime", getCancelTime())
            .append("dekiveryTime", getDekiveryTime())
            .append("dekiveryStatus", getDekiveryStatus())
            .toString();
    }
}
